package cn.regexp.seckill.mapper;

import cn.regexp.seckill.domain.OrderInfo;
import org.apache.ibatis.annotations.Param;

/**
 * @author Regexpei
 * @date 2024/7/5 23:33
 * @description 订单信息持久层
 */
public interface OrderInfoMapper {
    /**
     * 插入订单信息
     *
     * @param orderInfo 订单信息
     * @return 插入数量
     */
    int insert(OrderInfo orderInfo);

    /**
     * 根据订单编号查找订单
     *
     * @param orderNo 订单编号
     * @return 订单信息
     */
    OrderInfo find(String orderNo);

    /**
     * 将订单状态修改成取消状态
     *
     * @param orderNo 订单编号
     * @param status  状态
     * @return 修改数量
     */
    int updateCancelStatus(@Param("orderNo") String orderNo, @Param("status") Integer status);

    /**
     * 将订单状态修改成支付状态
     *
     * @param orderNo 订单编号
     * @param status  状态
     * @param payType 支付类型
     * @return 修改数量
     */
    int changePayStatus(@Param("orderNo") String orderNo, @Param("status") Integer status,
                        @Param("payType") int payType);

    /**
     * 将订单状态修改成已退款状态
     *
     * @param outTradeNo   订单编号
     * @param statusRefund 订单状态
     * @return 修改数量
     */
    int changeRefundStatus(@Param("orderNo") String outTradeNo, @Param("status") Integer statusRefund);
}
